package main

import (
	"fmt"
	"time"

	"google.golang.org/protobuf/proto"
)

//
// 下载protoc放到PATH目录中，然后安装protoc-gen-go。
// 编写protobuf文件 testdns.proto。为简单起见设在.proto中设置package为和本文件相同的main，即设置option go_package=".;main";
// 执行protoc --go_out=./ *.proto 生成testdns.pb.go
//

func main() {

	// 序列化
	fmt.Println("Hello,world!")
	n := &DNSResp{}
	n.Cname = append(n.Cname, "baidu.com")
	n.Cname = append(n.Cname, "cache-a.guangzhou.gd.cn")
	n.RequestName = "baidu.com"
	n.Timestamp = int32(time.Now().Unix())
	n.Ipv4 = append(n.GetIpv4(), 123456789)
	n.Ipv4 = append(n.Ipv4, 987654321)
	fmt.Println("将要序列化的结构体:", n)

	bs, err := proto.Marshal(n)
	if err != nil {
		fmt.Println(err.Error())
	} else {
		fmt.Println("序列化结果：", bs, "长度:", len(bs))
	}

	un := &DNSResp{}
	err = proto.Unmarshal(bs, un)
	if err != nil {
		fmt.Println(err.Error())
	} else {
		fmt.Println("反序列化后的结果:", un)
		fmt.Println("序列化前后是否相等：", proto.Equal(n, un))
	}

}
